<?php 
namespace app\index\model;
use think\Model;
use traits\model\SoftDelete;

class Notice extends Model {

    use SoftDelete; // 使用软删除
    protected $deleteTime = 'delete_time'; // 表明软删除记录的时间字段名，默认必须为null

    protected $autoWriteTimestamp = true; // 开启自动输入时间
    protected $updateTime = false;  // 不使用uodate_time
    protected $readonly = ['is_top']; // 保护字段，添加之后不再被更改

    protected $type = [ // 与数据库交互时，字段转为默认格式。包括 integer float boolean array(json对转) object(json对转) serialize json(json_encode) timestamp(时间格式与时间戳) datetime
        'status' => 'integer'
    ];

    // 自动完成，只对save方法有效果并且此处优先处理
    protected $auto = [];
    protected $insert = [];
    protected $update = ['nt_id'=>1]; 

    // 常用模型配置
    // protected $pk = '';
    // protected $table = '';
    // protected $connection = [];
    
    protected function initialize() {
        parent::initialize();
    }

    protected static function init() {
        // 注册事件
        self::event('before_insert', function($data) { // before_update  before_write  before_delete

        });
    }
    
    // 全局查询处理方法，每个查询都会通过此处
    protected function base($query) {

    }

    // 转换字段status的输出为返回值。参数为查询后的status值和每组数据数组
    public function getStatusAttr($value, $data) {
        return 123;
    }

    // 新数据处理
    public function setStatusAttr($value, $data) {
        return $value;
    }

    // 提前定义查询条件  方法名： scope+自定义名称，参数第二位开始为自定义传入参数
    protected function scopeNtid($query, $ntid = 3) {
        $query->where(['nt_id'=>$ntid]);
    }

}